using UnityEngine;
using System.Collections.Generic;
public class YahyaMinecraft : MonoBehaviour
{
GameObject player;
float speed = 6f;
List blocks = new List();
GameObject dog, cat;
bool dogFed = false;
Vector2 joystick;
Rect joyArea = new Rect(20, Screen.height - 250, 200, 200);
void Start()
{
// 1. إنشاء اللاعب
player = GameObject.CreatePrimitive(PrimitiveType.Capsule);
player.transform.position = new Vector3(0, 1, 0);
player.name = "Yahya";
player.GetComponent().material.color = Color.blue;
// إضافة Rigidbody للاعب لكي يتفاعل مع البلوكات المتساقطة
Rigidbody prb = player.AddComponent();
prb.constraints = RigidbodyConstraints.FreezeRotation; // منع اللاعب من السقوط على وجهه
prb.mass = 5; // اللاعب أثقل قليلاً ليدفع البلوكات
// 2. الأرض
GameObject ground = GameObject.CreatePrimitive(PrimitiveType.Plane);
ground.transform.localScale = new Vector3(10, 1, 10);
ground.GetComponent().material.color = new Color(0.3f, 0.7f, 0.3f);
// 3. الحيوانات
dog = CreateAnimal(new Vector3(3, 0.5f, 3), Color.yellow, "Dog");
cat = CreateAnimal(new Vector3(-3, 0.5f, 3), Color.magenta, "Cat");
// 4. بيت جاهز (ثابت بدون فيزياء لكي لا ينهار)
BuildHouse(new Vector3(5, 0, -5));
LoadGame();
}
void Update()
{
if (player != null)
{
MovePlayer();
UpdateCamera();
}
}
void UpdateCamera()
{
if (Camera.main != null)
{
Vector3 offset = new Vector3(0, 10, -8);
Camera.main.transform.position = player.transform.position + offset;
Camera.main.transform.LookAt(player.transform.position);
}
}
void MovePlayer()
{
Vector3 move = new Vector3(joystick.x, 0, joystick.y);
if (move.magnitude > 0.1f)
{
player.transform.Translate(move * speed * Time.deltaTime, Space.World);
Quaternion targetRotation = Quaternion.LookRotation(move);
player.transform.rotation = Quaternion.Slerp(player.transform.rotation, targetRotation, 10f * Time.deltaTime);
}
}
// 🧱 بناء بلوك مع فيزياء (معدل)
void BuildBlock()
{
// البناء يتم في مكان أعلى قليلاً ليشاهد اللاعب البلوك يسقط
Vector3 pos = player.transform.position + player.transform.forward * 2f + Vector3.up * 3f;
GameObject block = GameObject.CreatePrimitive(PrimitiveType.Cube);
block.transform.position = pos;
block.GetComponent().material.color = new Color(0.6f, 0.3f, 0);
// 🔥 إضافة الفيزياء للبلوك 🔥
Rigidbody rb = block.AddComponent();
rb.mass = 1f; // وزن البلوك
blocks.Add(block);
}
void FeedDog()
{
if (dog != null && Vector3.Distance(player.transform.position, dog.transform.position) < 3f)
{
dogFed = true;
dog.GetComponent().material.color = Color.green;
}
}
void BuildHouse(Vector3 start)
{
for (int x = 0; x < 3; x++)
{
for (int z = 0; z < 3; z++)
{
if (x == 1 && z == 1) continue;
// البلوكات هنا ثابتة (بدون Rigidbody)
CreateStaticBlock(start + new Vector3(x, 0, z));
}
}
CreateStaticBlock(start + new Vector3(1, 1, 1));
}
// دالة خاصة لإنشاء بلوكات البيت الثابتة
GameObject CreateStaticBlock(Vector3 pos)
{
GameObject b = GameObject.CreatePrimitive(PrimitiveType.Cube);
b.transform.position = pos + Vector3.up * 0.5f;
return b;
}
GameObject CreateAnimal(Vector3 pos, Color c, string name)
{
GameObject a = GameObject.CreatePrimitive(PrimitiveType.Cube);
a.transform.position = pos;
a.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
a.GetComponent().material.color = c;
a.name = name;
return a;
}
void SaveGame()
{
PlayerPrefs.SetFloat("px", player.transform.position.x);
PlayerPrefs.SetFloat("pz", player.transform.position.z);
PlayerPrefs.Save();
}
void LoadGame()
{
if (PlayerPrefs.HasKey("px"))
{
Vector3 loadedPos = new Vector3(PlayerPrefs.GetFloat("px"), 1, PlayerPrefs.GetFloat("pz"));
player.transform.position = loadedPos;
}
}
void OnGUI()
{
GUI.Box(joyArea, "Joystick");
if (Event.current.type == EventType.MouseDrag || Event.current.type == EventType.MouseDown)
{
if (joyArea.Contains(Event.current.mousePosition))
{
Vector2 center = joyArea.center;
joystick = (Event.current.mousePosition - center) / (joyArea.width / 2);
joystick = Vector2.ClampMagnitude(joystick, 1f);
}
}
else if (Event.current.type == EventType.MouseUp)
{
joystick = Vector2.zero;
}
GUIStyle btnStyle = new GUIStyle(GUI.skin.button);
btnStyle.fontSize = 20;
// زر البناء
if (GUI.Button(new Rect(Screen.width - 150, Screen.height - 100, 130, 60), "Build 🧱", btnStyle))
BuildBlock();
// زر الإطعام
if (GUI.Button(new Rect(Screen.width - 150, Screen.height - 180, 130, 60), "Feed 🍖", btnStyle))
FeedDog();
// زر الحفظ
if (GUI.Button(new Rect(20, 20, 100, 50), "Save 💾", btnStyle))
SaveGame();
}
}
My Page